Features generally relate to the field of computers, and, more particularly, to asynchronous communications having compounded responses.
Remote Procedure Call (RPC) is an inter-process communication that enables a procedure to execute in a different address space. The different address space can be in a same or different computer. Also, the programmer of the procedure is not required to code the instructions for this remote interaction with the different address space. Therefore, the same code can essentially be written for the procedure executing locally or in the different address space.
Usage of RPC abstracts the programmer from network programming, network errors, different character encoding and word length of computers in a network. RPC also allows running a specialized task (as a service) on a computer such that the task can be used by other computers in the network.
RPC can be synchronous or asynchronous. For synchronous RPC, a remote procedure is called and the calling routine blocks until the remote procedure returns a result. In many scenarios, the remote procedure can be time consuming and this leads to the blocking of thread/system-resources by the caller (or client). To avoid this blocking, many applications create two separate channels for asynchronous RPC. One channel is for sending the requests, and other channel is for receiving the responses. Each procedure can be identified by a unique identification. RPC that receives the request queues the request for processing and sends an acknowledgement to the client. When the procedure has completed execution, a response is sent to caller with the unique request identification along with the response.